ini_tablero(Tablero) :-
	Tablero = [[negro, empty, empty, empty, empty, empty, empty, blanco],
                 [empty, empty, empty, empty, empty, empty, empty, empty],
                 [empty, empty, empty, empty, empty, empty, empty, empty],
                 [empty, empty, empty, empty, empty, empty, empty, empty],
                 [empty, empty, empty, empty, empty, empty, empty, empty],
                 [empty, empty, empty, empty, empty, empty, empty, empty],
                 [empty, empty, empty, empty, empty, empty, empty, empty],
                 [blanco, empty, empty, empty, empty, empty, empty, negro]].

 pinta_tablero(Tablero) :-
         writeln('    0 1 2 3 4 5 6 7'),
         writeln('-------------------'),
         write('0| '),
         pinta_tablero(Tablero, 0, 0).

 pinta_tablero(_, 7, 8):-
         writeln(''),
         writeln(''),!.

 pinta_tablero(Tablero, Fila, 8) :-
         NFila is Fila + 1,
         writef('\n%d| ', [NFila]),
         pinta_tablero(Tablero, NFila, 0).


 pinta_tablero(Tablero, Fila, Columna) :-
         ficha(Tablero, Fila, Columna, Ficha),
         pinta_ficha(Ficha),
         NColumna is Columna + 1,
         pinta_tablero(Tablero, Fila, NColumna).

 ficha(Tablero, Fila, Columna, Ficha) :-
         es_indice_valido(Fila),
         es_indice_valido(Columna),
         nth0(Fila, Tablero, Row),
         nth0(Columna, Row, Ficha).

es_indice_valido(Indice) :-
         Indice >= 0,
         Indice < 8.

pinta_ficha(negro):-
         write(' X').

pinta_ficha(blanco):-
         write(' O').

pinta_ficha(empty):-
         write(' -').

vacias_en_tablero(Tablero):-
         member(Row, Tablero),
         member(Pieza, Row),
         Pieza = empty,!.

encuentra_movimientos(Tablero, Color, ListaMov):-
         encuentra_movimientos(Tablero, Color, 0, 0, [], ListaMov).

encuentra_movimientos(_, _, 7, 8, ListaMov, ListaMov):-!.

encuuentra_movimientos(Tablero, Color, Fila, 8, ListaMov, ListaFinal):-
         NFila is Fila + 1,
         encuentra_movimientos(Tablero, Color, NFila, 0, ListaMov, ListaFinal),!.

encuentra_movimientos(Tablero, Color, Fila, Columna, ListaMov, ListaFinal):-
         valid_move(Board, RowIndex, ColumnIndex, Color, ValidDirectionOffsets),
         append(MovesList,[[RowIndex, ColumnIndex, ValidDirectionOffsets]], NMovesList),
         NColumnIndex is ColumnIndex + 1,
         find_moves(Board, Color, RowIndex, NColumnIndex, NMovesList, FinalList),!.

encuentra_movimientos(Tablero, Color, Fila, Columna, ListaMov, ListaFinal):-
         NColumna is Columna + 1,
         encuentra_movimientos(Tablero, Color, Fila, NColumna, ListaMov, ListaFinal),!.





